package cn.duyo.spring.beans.factory;

/**
 * 复杂对象创建接口 (工厂bean)
 * tips: 允许分阶段组装对象，适合于创建复杂对象。如 Mybatis 的DAO层接口
 *
 * @author du
 */
public interface FactoryBean<T> {

    /**
     * 对象获取
     * @return
     * @throws Exception
     */
    T getObject() throws Exception;

    /**
     * 对象类型
     * @return
     */
    Class<?> getObjectType();

    /**
     * 是否单例 (如果是单例还是会放到单例容器内存中)
     * @return
     */
    boolean isSingleton();

}